// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
// #include <assert.h>
//
// typedef struct SqList {
//     int* data;
//     int length;
//     int maxsize;
// }SqList;
//
// void InitSQ(SqList* L) {
//     L->data=NULL;
//     L->length=L->maxsize=0;
// }
//
// void Full(SqList* L) {
//     if(L->length==L->maxsize) {
//         int NewLength=L->length==0?4:2*L->maxsize;
//         int* tmp=(int*)realloc(L->data,sizeof(int)*NewLength);
//         if(tmp==NULL) {
//             exit(1);
//         }
//         L->data=tmp;
//         L->maxsize=NewLength;
//     }
// }
//
// void InsertBack(SqList* L, int elem) {
//     if (L == NULL) return;
//     Full(L);
//     L->data[L->length] = elem;
//     L->length++;
// }
//
// void Print(SqList* L) {
//     for(int i=0;i<L->length;i++) {
//         printf("%d ",L->data[i]);
//     }
//     printf("\n");
// }
//
// void Destroy(SqList* L) {
//     if(L == NULL) return;
//     free(L->data);
//     L->data = NULL;
//     L->length = L->maxsize = 0;
// }
//
// int ReturnXiaBiao(SqList* L,int x) {
//     assert(L&&L->data);
//     //二分查找实现
//     int start=0;int end=L->length-1;
//     int mid=(start+end)/2;
//     while (start<=end) {
//         if(L->data[mid]==x) {
//             return mid;
//         }else if(L->data[mid]<x) {
//             start=mid+1;
//             mid=(start+end)/2;
//         }else if(L->data[mid]>x) {
//             end=mid-1;
//             mid=(start+end)/2;
//         }
//     }
//     return -1;
// }
//
// int compare(const void* a, const void* b) {
//     return (*(int*)a - *(int*)b);
// }
//
// void ProccessElement(SqList* L,int x) {
//     int n=ReturnXiaBiao(L,x);
//     //找到了，与后继元素互换(获得当前元素下标，再交换)
//     if(n!=-1) {
//         //如果这个元素恰好为最后一个元素，则不用互换
//         if(n==L->length-1) {
//             printf("这个元素恰好为最后一个元素，则不用互换\n");printf("顺序表为:");Print(L);
//         }else {
//             //不是最后一个元素则互换
//             int temp=L->data[n];
//             L->data[n]=L->data[n+1];
//             L->data[n+1]=temp;
//             printf("互换后的顺序表为:");Print(L);
//         }
//     }else {
//         //插入表中，使表有序(先尾插，在排序)
//         InsertBack(L,x);
//         qsort(L->data, L->length, sizeof(int), compare);
//         printf("排序后的:");Print(L);
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     SqList L;
//     InitSQ(&L);
//
//     InsertBack(&L,1);
//     InsertBack(&L,2);
//     InsertBack(&L,3);
//     InsertBack(&L,4);
//     InsertBack(&L,5);
//     InsertBack(&L,6);
//
//     ProccessElement(&L,10);
//     ProccessElement(&L,9);
//     ProccessElement(&L,3);
//
//     return 0;
// }